#include<opencv2/opencv.hpp>
#include<cv.h>
#include<vector>
 
using namespace cv;
using namespace std;

void get_imgs_stitching(vector<Mat>imgs_vec)
{   
    int resize_width = 200;
    int resize_height = 300;	
    // 定义输出图像，暂定义为三张图像拼接
    Mat outputImage = Mat::zeros(resize_height, resize_width*3, imgs_vec[0].type());
    for(int i = 0; i < imgs_vec.size(); i ++)
    {
	Mat srcImage = imgs_vec[i];
    Mat dstImage;
	// 进行一定比例缩放
	resize(srcImage, dstImage, Size(resize_width, resize_height), (0, 0), (0, 0), cv::INTER_LINEAR);
	
    // 横向拼接图片，因此cvRet第二个参数均设为0
	CvRect rect = cvRect(resize_width*i, 0, dstImage.cols, dstImage.rows);
	Mat dstMat = outputImage(rect);
	// 将指定拷贝至目标图像
    dstImage.colRange(0, dstImage.cols).copyTo(dstMat);
    }     
    
    // 保存图像
    imwrite("img_stitching.png", outputImage);
    // 显示图像
    imshow("img_stitching", outputImage);
    waitKey();
}


int main()
{   
    Mat img = imread("coffe.jpg", ImreadModes::IMREAD_UNCHANGED);
    // 定义图像集合，可以是不同图片，这里为了简单测试，使用同一张照片
    vector< Mat > imgs_vec;
    for( int i = 0; i < 3; i++)
    {
	imgs_vec.push_back(img);
    }
    
    get_imgs_stitching(imgs_vec);  
	
}    
